সি প্রোগ্রামিং ভাষায় ইনপুট এবং আউটপুট ফাংশনগুলো একটি প্রোগ্রামের জন্য অত্যন্ত গুরুত্বপূর্ণ। stdio.h
(স্ট্যান্ডার্ড ইনপুট/আউটপুট) হেডার ফাইলটি সি প্রোগ্রামের মধ্যে ইনপুট এবং আউটপুট ফাংশনগুলো সরবরাহ করে। এই ফাংশনগুলো ব্যবহার করে আপনি কনসোলে আউটপুট প্রদর্শন করতে পারেন এবং কনসোল থেকে ইনপুট নিতে পারেন। সি প্রোগ্রামের প্রাথমিক কাজগুলোর মধ্যে ইনপুট ও আউটপুট অন্যতম, এবং এই ফাংশনগুলো এগুলো খুব সহজে করতে সাহায্য করে।
এখানে সি স্ট্যান্ডার্ড লাইব্রেরির বিভিন্ন ইনপুট ও আউটপুট ফাংশনের বিস্তারিত ব্যাখ্যা দেওয়া হলো:
printf()
– আউটপুট প্রদর্শনprintf()
ফাংশনটি কনসোলে আউটপুট প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি ফরম্যাটেড আউটপুট প্রদানের জন্য একটি শক্তিশালী ফাংশন। প্রোগ্রামাররা এই ফাংশন ব্যবহার করে কনসোলে বিভিন্ন ধরনের আউটপুট, যেমন স্ট্রিং, নাম্বার, ফ্লোটিং পয়েন্ট মান এবং অন্যান্য ডাটা টাইপ আউটপুট করতে পারেন।
printf("format_string", argument1, argument2, ...);
ফরম্যাট স্পেসিফায়ার ব্যবহার করে আপনি আউটপুট কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, আপনি একটি ইন্টিজার, ফ্লোট বা স্ট্রিং আউটপুট দিতে পারেন।
#include <stdio.h>
int main() {
int number = 10;
float pi = 3.14159;
// আউটপুট প্রদর্শন
printf("The number is: %d\n", number); // ইন্টিজার আউটপুট
printf("The value of pi is: %.2f\n", pi); // ফ্লোট আউটপুট (দুই দশমিক পর্যন্ত)
return 0;
}
ফরম্যাট স্পেসিফায়ার:
%d
বা %i
- ইন্টিজার%f
- ফ্লোটিং পয়েন্ট নম্বর%c
- একক চরিত্র%s
- স্ট্রিং%.2f
- ফ্লোটের জন্য দুই দশমিক পর্যন্ত আউটপুটscanf()
– ইনপুট নেওয়াscanf()
ফাংশনটি কনসোল থেকে ইনপুট নেয়ার জন্য ব্যবহৃত হয়। এটি ইউজারের কাছ থেকে ডাটা গ্রহণ করে এবং তা নির্দিষ্ট ভেরিয়েবলে স্টোর করে। ইনপুট নেওয়ার সময়, scanf()
নির্দিষ্ট ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুট ডেটা গ্রহণ করে।
scanf("format_string", &variable1, &variable2, ...);
#include <stdio.h>
int main() {
int age;
float height;
// ইউজারের কাছ থেকে ইনপুট নেওয়া
printf("Enter your age: ");
scanf("%d", &age); // %d ইন্টিজার ইনপুটের জন্য
printf("Enter your height: ");
scanf("%f", &height); // %f ফ্লোট ইনপুটের জন্য
// আউটপুট প্রদর্শন
printf("Your age is: %d\n", age);
printf("Your height is: %.2f\n", height);
return 0;
}
ফরম্যাট স্পেসিফায়ার:
%d
– ইন্টিজার ইনপুট%f
– ফ্লোট ইনপুট%c
– একক ক্যারেক্টার ইনপুট%s
– স্ট্রিং ইনপুটgetchar()
– একক অক্ষর ইনপুটgetchar()
ফাংশনটি কনসোল থেকে একক অক্ষর ইনপুট নেয়। এটি একটি অক্ষর গ্রহণ করে এবং ফিরিয়ে দেয় যা ইউজার কিপ্যাড থেকে টাইপ করেছে। এটি সাধারণত একক অক্ষরের ইনপুট গ্রহণ করতে ব্যবহৃত হয়, এবং এটি স্ট্রিং ইনপুট থেকে আলাদা।
char getchar(void);
#include <stdio.h>
int main() {
char c;
printf("Enter a character: ");
c = getchar(); // একক অক্ষর ইনপুট
printf("You entered: %c\n", c);
return 0;
}
getchar()
ফাংশনটি শুধুমাত্র একটি অক্ষর গ্রহণ করে। এটি ইন্টারঅ্যাকটিভ প্রোগ্রামিংয়ের জন্য উপকারী, যেখানে ইউজার একটি নির্দিষ্ট চিহ্ন বা অক্ষর প্রদান করে।
putchar()
– একক অক্ষর আউটপুটputchar()
ফাংশনটি কনসোলে একক অক্ষর আউটপুট প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি একটি অক্ষর আর্গুমেন্ট হিসেবে গ্রহণ করে এবং সেই অক্ষরটি কনসোলে প্রদর্শন করে।
putchar(character);
#include <stdio.h>
int main() {
char c = 'A';
// একক অক্ষর আউটপুট
putchar(c); // 'A' প্রদর্শন করবে
printf("\n");
return 0;
}
putchar()
ফাংশনটি খুব সহজ এবং সহজেই একক অক্ষরের আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।
fgets()
– স্ট্রিং ইনপুটfgets()
ফাংশনটি একটি নির্দিষ্ট সংখ্যক ক্যারেক্টার পড়ে এবং একটি স্ট্রিং হিসেবে স্টোর করে। এটি ফাইল থেকে অথবা কনসোল থেকে ইনপুট নিতে ব্যবহৃত হয় এবং এটি gets()
এর একটি নিরাপদ বিকল্প। fgets()
ব্যবহার করে আপনি ইনপুটের আকার সীমাবদ্ধ করতে পারেন।
fgets(string, size, stdin);
#include <stdio.h>
int main() {
char str[100];
// স্ট্রিং ইনপুট
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
printf("You entered: %s", str);
return 0;
}
fgets()
ফাংশনটি একটি নির্দিষ্ট আকারের স্ট্রিং গ্রহণ করে এবং এটি বাফার ওভারফ্লো প্রতিরোধ করতে সহায়ক।
gets()
– স্ট্রিং ইনপুট (Deprecated)gets()
ফাংশনটি কনসোল থেকে একটি পূর্ণ লাইন স্ট্রিং ইনপুট নেয়। তবে এটি ব্যবহার করা নিরাপদ নয়, কারণ এটি বাফার ওভারফ্লো সৃষ্টি করতে পারে। নিরাপত্তার কারণে বর্তমানে gets()
ফাংশনটি ব্যবহার করা উচিত নয়, এবং এর পরিবর্তে fgets()
ব্যবহার করার পরামর্শ দেওয়া হয়।
gets(string);
gets()
ব্যবহার করলে যদি ইউজার ইনপুটের মধ্যে বেশিরকম ক্যারেক্টার দেন, তবে এটি বাফারে অতিরিক্ত ডেটা রাখতে পারে, যা প্রোগ্রামের ক্র্যাশ বা অন্যান্য সমস্যা সৃষ্টি করতে পারে।
সি প্রোগ্রামিংয়ে ইনপুট এবং আউটপুট ফাংশনগুলো প্রোগ্রামারদের ইউজারের সাথে যোগাযোগের একটি গুরুত্বপূর্ণ উপায়। printf()
, scanf()
, getchar()
, putchar()
, এবং fgets()
এই ফাংশনগুলো ইনপুট এবং আউটপুট অপারেশন সহজ এবং কার্যকরী করে তোলে। তবে gets()
ফাংশনটি নিরাপত্তা ঝুঁকির কারণে এখন ব্যবহার করা উচিত নয় এবং তার পরিবর্তে fgets()
ব্যবহার করা উচিত।
stdio.h
হেডার ফাইল এবং এর ফাংশনসমূহstdio.h
হেডার ফাইলটি সি স্ট্যান্ডার্ড লাইব্রেরির অংশ, যা স্ট্যান্ডার্ড ইনপুট এবং আউটপুট অপারেশনের জন্য বিভিন্ন ফাংশন সরবরাহ করে। এটি Standard Input/Output
এর সংক্ষিপ্ত রূপ। stdio.h
ফাইলের ফাংশনগুলোর মাধ্যমে প্রোগ্রামাররা ইনপুট ও আউটপুট কার্যক্রম সহজে পরিচালনা করতে পারেন, যেমন কনসোল বা ফাইল থেকে ডেটা ইনপুট নেওয়া এবং আউটপুট দেখানো।
এখানে stdio.h
হেডার ফাইলের কিছু গুরুত্বপূর্ণ ফাংশন এবং তাদের ব্যবহারের ধরন নিয়ে আলোচনা করা হলো:
printf()
– ফরম্যাটেড আউটপুট প্রদর্শনprintf()
ফাংশনটি কনসোলে আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়। এটি ফরম্যাটেড আউটপুট প্রদর্শনে খুবই কার্যকর এবং বিভিন্ন ধরনের ডেটা টাইপ আউটপুট করতে সক্ষম।
printf("format_string", argument1, argument2, ...);
#include <stdio.h>
int main() {
int age = 25;
printf("Your age is: %d\n", age);
return 0;
}
scanf()
– ফরম্যাটেড ইনপুট গ্রহণscanf()
ফাংশনটি ইউজারের কাছ থেকে ইনপুট নিতে ব্যবহৃত হয় এবং এটি ভেরিয়েবলে ইনপুট ডেটা স্টোর করে। এই ফাংশনটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুট গ্রহণ করে।
scanf("format_string", &variable1, &variable2, ...);
#include <stdio.h>
int main() {
int age;
printf("Enter your age: ");
scanf("%d", &age);
printf("Your age is: %d\n", age);
return 0;
}
getchar()
– একক ক্যারেক্টার ইনপুটgetchar()
ফাংশনটি কনসোল থেকে একটি একক ক্যারেক্টার ইনপুট গ্রহণ করে এবং তা রিটার্ন করে। এটি একক ক্যারেক্টার ইনপুট নেওয়ার জন্য খুবই উপযোগী।
char getchar(void);
#include <stdio.h>
int main() {
char ch;
printf("Enter a character: ");
ch = getchar();
printf("You entered: %c\n", ch);
return 0;
}
putchar()
– একক ক্যারেক্টার আউটপুটputchar()
ফাংশনটি কনসোলে একটি একক ক্যারেক্টার আউটপুট প্রদর্শন করতে ব্যবহৃত হয়। এটি একটি ক্যারেক্টার আর্গুমেন্ট গ্রহণ করে এবং সেটি আউটপুট করে।
putchar(character);
#include <stdio.h>
int main() {
char ch = 'A';
putchar(ch);
return 0;
}
gets()
– স্ট্রিং ইনপুট (Deprecated)gets()
ফাংশনটি কনসোল থেকে সম্পূর্ণ একটি লাইন ইনপুট নেয়। তবে এটি নিরাপদ নয় এবং বাফার ওভারফ্লো ঘটাতে পারে, এজন্য fgets()
ব্যবহার করার পরামর্শ দেওয়া হয়।
gets(string);
#include <stdio.h>
int main() {
char name[100];
printf("Enter your name: ");
gets(name); // পরামর্শ দেওয়া হয় না
printf("Hello, %s\n", name);
return 0;
}
fgets()
– নিরাপদ স্ট্রিং ইনপুটfgets()
ফাংশনটি নির্দিষ্ট আকারের একটি স্ট্রিং ইনপুট গ্রহণ করে। এটি gets()
এর একটি নিরাপদ বিকল্প।
fgets(string, size, stdin);
#include <stdio.h>
int main() {
char name[100];
printf("Enter your name: ");
fgets(name, sizeof(name), stdin);
printf("Hello, %s", name);
return 0;
}
puts()
– স্ট্রিং আউটপুটputs()
ফাংশনটি একটি স্ট্রিং কনসোলে প্রদর্শন করে এবং শেষে একটি newline ক্যারেক্টার যোগ করে। এটি printf()
এর বিকল্প হিসেবে দ্রুত স্ট্রিং প্রদর্শনে ব্যবহৃত হয়।
puts(string);
#include <stdio.h>
int main() {
char name[] = "John Doe";
puts(name); // আউটপুটের শেষে newline
return 0;
}
fprintf()
এবং fscanf()
– ফাইলের মাধ্যমে ইনপুট/আউটপুটfprintf()
এবং fscanf()
ফাংশন দুটি ফাইল থেকে ইনপুট এবং আউটপুট পরিচালনার জন্য ব্যবহৃত হয়।
fprintf()
:ফরম্যাটেড আউটপুট ফাইলে লেখার জন্য ব্যবহৃত হয়।
fprintf(file_pointer, "format_string", argument1, argument2, ...);
fscanf()
:ফরম্যাটেড ইনপুট ফাইল থেকে পড়ার জন্য ব্যবহৃত হয়।
fscanf(file_pointer, "format_string", &variable1, &variable2, ...);
#include <stdio.h>
int main() {
FILE *fptr;
fptr = fopen("test.txt", "w"); // ফাইল খোলা
if (fptr != NULL) {
fprintf(fptr, "Hello, file!\n"); // ফাইলে লেখা
fclose(fptr); // ফাইল বন্ধ করা
}
return 0;
}
fopen()
এবং fclose()
– ফাইল খোলা এবং বন্ধ করাfopen()
এই ফাংশনটি একটি ফাইল খুলে এবং ফাইল পয়েন্টার রিটার্ন করে।
FILE *fopen(const char *filename, const char *mode);
fclose()
এই ফাংশনটি ফাইল বন্ধ করতে ব্যবহৃত হয়।
int fclose(FILE *file_pointer);
#include <stdio.h>
int main() {
FILE *fptr = fopen("test.txt", "r");
if (fptr != NULL) {
fclose(fptr);
}
return 0;
}
stdio.h
হেডার ফাইলটি সি প্রোগ্রামিংয়ে ইনপুট এবং আউটপুট অপারেশনের জন্য একটি অপরিহার্য হেডার ফাইল। এই হেডার ফাইলটি ইনপুট এবং আউটপুট অপারেশন সহজে সম্পন্ন করতে বিভিন্ন ধরনের ফাংশন সরবরাহ করে, যেমন printf()
, scanf()
, getchar()
, putchar()
, fgets()
, এবং **fprintf()
**। এগুলোর মাধ্যমে প্রোগ্রামার কনসোল এবং ফাইল থেকে ইনপুট নিতে এবং আউটপুট দিতে পারেন।
printf()
এবং scanf()
ফাংশনসি প্রোগ্রামিং ভাষায় printf()
এবং scanf()
ফাংশন দুটি সবচেয়ে বেশি ব্যবহৃত হয়। printf()
ফাংশনটি কনসোলে আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়, আর scanf()
ফাংশনটি কনসোল থেকে ইনপুট গ্রহণের জন্য ব্যবহৃত হয়। এই দুটি ফাংশন stdio.h
হেডার ফাইলের অন্তর্ভুক্ত, এবং এটি সাধারণত প্রোগ্রামারের ইউজারের সাথে ইন্টারঅ্যাকশনের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।
printf()
ফাংশনprintf()
ফাংশনটি কনসোলে আউটপুট প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে আউটপুট ফরম্যাট করা যায়, যা বিভিন্ন ধরনের ডেটা টাইপ আউটপুট করতে সহায়ক। উদাহরণস্বরূপ, ইন্টিজার, ফ্লোট, স্ট্রিং ইত্যাদি।
printf("format_string", argument1, argument2, ...);
%d
বা %i
– ইন্টিজার আউটপুটের জন্য।%f
– ফ্লোট আউটপুটের জন্য।%c
– একক ক্যারেক্টার আউটপুটের জন্য।%s
– স্ট্রিং আউটপুটের জন্য।%x
– হেক্সাডেসিমাল আউটপুটের জন্য।%o
– অক্টাল আউটপুটের জন্য।%.nf
– দশমিকের পরে নির্দিষ্ট সংখ্যক ডিজিট প্রদর্শনের জন্য (যেমন, %.2f
দুই দশমিক পর্যন্ত ফ্লোট প্রদর্শন করবে)।#include <stdio.h>
int main() {
int age = 25;
float pi = 3.14159;
char initial = 'A';
char name[] = "Alice";
printf("Age: %d\n", age); // ইন্টিজার আউটপুট
printf("Value of pi: %.2f\n", pi); // ফ্লোট আউটপুট (দুই দশমিক পর্যন্ত)
printf("Initial: %c\n", initial); // ক্যারেক্টার আউটপুট
printf("Name: %s\n", name); // স্ট্রিং আউটপুট
return 0;
}
এই উদাহরণে বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করে আউটপুট ফরম্যাট করা হয়েছে। %d
, %.2f
, %c
, এবং %s
এর মাধ্যমে বিভিন্ন ধরনের ডেটা টাইপ আউটপুট করা হয়েছে।
scanf()
ফাংশনscanf()
ফাংশনটি কনসোল থেকে ইনপুট নেয়ার জন্য ব্যবহৃত হয়। এটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুটের ধরন নির্ধারণ করে এবং ভেরিয়েবলে ডেটা স্টোর করে। scanf()
ফাংশনের মাধ্যমে বিভিন্ন ধরনের ইনপুট নেওয়া যায়, যেমন ইন্টিজার, ফ্লোট, স্ট্রিং ইত্যাদি।
scanf("format_string", &variable1, &variable2, ...);
বিঃদ্রঃ
scanf()
ফাংশনে ইনপুট নেওয়ার সময় ভেরিয়েবলের ঠিকানায় ডেটা স্টোর করতে&
অপারেটর ব্যবহার করা হয়।
%d
– ইন্টিজার ইনপুটের জন্য।%f
– ফ্লোট ইনপুটের জন্য।%c
– একক ক্যারেক্টার ইনপুটের জন্য।%s
– স্ট্রিং ইনপুটের জন্য (একটি শব্দ ইনপুট নেয়)।%x
– হেক্সাডেসিমাল ইনপুটের জন্য।%o
– অক্টাল ইনপুটের জন্য।#include <stdio.h>
int main() {
int age;
float height;
char initial;
char name[50];
printf("Enter your age: ");
scanf("%d", &age); // ইন্টিজার ইনপুট
printf("Enter your height: ");
scanf("%f", &height); // ফ্লোট ইনপুট
printf("Enter your initial: ");
scanf(" %c", &initial); // ক্যারেক্টার ইনপুট
printf("Enter your name: ");
scanf("%s", name); // স্ট্রিং ইনপুট (একটি শব্দ)
printf("\nYour age: %d\n", age);
printf("Your height: %.2f\n", height);
printf("Your initial: %c\n", initial);
printf("Your name: %s\n", name);
return 0;
}
এখানে scanf()
ফাংশনের মাধ্যমে বিভিন্ন ধরনের ইনপুট নেওয়া হয়েছে। %d
, %f
, %c
, এবং %s
ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুটের ধরন নির্ধারণ করা হয়েছে।
বিঃদ্রঃ: ক্যারেক্টার ইনপুট নেওয়ার সময়
scanf(" %c", &initial);
ব্যবহারের আগে স্পেস দিয়ে লেখা হয়েছে। এটি পূর্বের newline বা স্পেস এড়াতে সাহায্য করে।
printf()
এবং scanf()
এর মাধ্যমে ফরম্যাটেড ইনপুট ও আউটপুটprintf()
এবং scanf()
ফাংশনের মাধ্যমে বিভিন্ন ধরনের ফরম্যাট স্পেসিফায়ার ব্যবহার করে ইনপুট ও আউটপুট পরিচালনা করা যায়। ফরম্যাট স্পেসিফায়ার গুলি ভিন্ন ভিন্ন ডেটা টাইপের জন্য আলাদা থাকে। এগুলো ব্যবহার করে আপনি কনসোলে কাস্টম ইনপুট এবং আউটপুট করতে পারেন। যেমন, আপনি ইন্টিজার, ফ্লোট, ক্যারেক্টার এবং স্ট্রিং ইত্যাদি বিভিন্ন ডেটা টাইপ সহজেই ইনপুট ও আউটপুট করতে পারবেন।
printf()
এবং scanf()
ফাংশন দুটি সি প্রোগ্রামিংয়ের ইনপুট ও আউটপুট অপারেশন পরিচালনার জন্য গুরুত্বপূর্ণ। printf()
ফাংশনটি আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়, যেখানে বিভিন্ন ধরনের ডেটা আউটপুট করা যায়। scanf()
ফাংশনটি ইনপুট গ্রহণের জন্য ব্যবহৃত হয়, যেখানে বিভিন্ন ধরনের ইনপুট কনসোল থেকে নেওয়া সম্ভব। এই ফাংশন দুটি stdio.h
হেডার ফাইলের অন্তর্গত এবং সি প্রোগ্রামিংয়ে ইউজারের সাথে ইন্টারঅ্যাকশনের জন্য অপরিহার্য।
gets()
, puts()
, getchar()
এবং putchar()
এর ব্যবহারসি প্রোগ্রামিং ভাষায় gets()
, puts()
, getchar()
এবং putchar()
ফাংশনগুলো ইনপুট এবং আউটপুটের জন্য ব্যবহার করা হয়। প্রতিটি ফাংশনের একটি নির্দিষ্ট কাজ রয়েছে এবং প্রোগ্রামিংয়ে ইউজারের সাথে ইন্টারঅ্যাকশন আরও সহজ করে তোলে। নিচে এই ফাংশনগুলো সম্পর্কে বিস্তারিত আলোচনা করা হলো।
gets()
– স্ট্রিং ইনপুট (Deprecated)gets()
ফাংশনটি কনসোল থেকে সম্পূর্ণ একটি লাইন স্ট্রিং ইনপুট নিতে ব্যবহৃত হয়। এটি ব্যবহার করে ইউজার একটি সম্পূর্ণ লাইন টাইপ করতে পারে, যা পরবর্তী newline ক্যারেক্টার পর্যন্ত ইনপুট হিসাবে গৃহীত হয়। তবে, gets()
ফাংশনটি নিরাপত্তাজনিত ঝুঁকির কারণে বর্তমানে পরিত্যক্ত (deprecated), কারণ এটি বাফার ওভারফ্লো ঘটাতে পারে। এর পরিবর্তে fgets()
ফাংশন ব্যবহার করার পরামর্শ দেওয়া হয়।
gets(string);
#include <stdio.h>
int main() {
char name[100];
printf("Enter your name: ");
gets(name); // এটি নিরাপদ নয় এবং পরামর্শ দেওয়া হয় না
printf("Hello, %s\n", name);
return 0;
}
বিঃদ্রঃ
gets()
ফাংশনটি নিরাপদ নয়, তাই এর পরিবর্তেfgets()
ব্যবহার করা উচিৎ।
puts()
– স্ট্রিং আউটপুটputs()
ফাংশনটি একটি স্ট্রিং কনসোলে প্রদর্শন করার জন্য ব্যবহৃত হয়। এটি printf()
এর বিকল্প হিসেবে স্ট্রিং আউটপুট দিতে পারে। puts()
ফাংশনটি স্ট্রিং প্রদর্শনের পরে একটি newline ক্যারেক্টার (নতুন লাইন) যোগ করে, যার ফলে আউটপুটের পরে নতুন লাইনে চলে যায়।
puts(string);
#include <stdio.h>
int main() {
char name[] = "Alice";
puts("Hello,");
puts(name); // আউটপুটের শেষে newline ক্যারেক্টার যুক্ত করবে
return 0;
}
এখানে puts()
ফাংশনটি স্ট্রিং আউটপুট প্রদর্শন করেছে এবং প্রতিটি আউটপুটের শেষে একটি নতুন লাইন যোগ করেছে।
getchar()
– একক ক্যারেক্টার ইনপুটgetchar()
ফাংশনটি কনসোল থেকে একটি একক ক্যারেক্টার ইনপুট নিতে ব্যবহৃত হয়। এটি একটি অক্ষর ইনপুট গ্রহণ করে এবং সেই অক্ষরটি প্রোগ্রামে রিটার্ন করে। getchar()
সাধারণত একক অক্ষর ইনপুটের জন্য উপযুক্ত।
char getchar(void);
#include <stdio.h>
int main() {
char ch;
printf("Enter a character: ");
ch = getchar(); // একক অক্ষর ইনপুট
printf("You entered: %c\n", ch);
return 0;
}
এখানে getchar()
ফাংশনটি একটি অক্ষর ইনপুট গ্রহণ করেছে এবং printf()
এর মাধ্যমে সেই অক্ষরটি প্রদর্শন করেছে।
putchar()
– একক ক্যারেক্টার আউটপুটputchar()
ফাংশনটি কনসোলে একটি একক ক্যারেক্টার আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়। এটি একটি ক্যারেক্টার আর্গুমেন্ট হিসেবে গ্রহণ করে এবং সেই ক্যারেক্টারটি কনসোলে প্রদর্শন করে।
putchar(character);
#include <stdio.h>
int main() {
char ch = 'A';
printf("The character is: ");
putchar(ch); // একক অক্ষর আউটপুট করবে
printf("\n");
return 0;
}
এখানে putchar()
ফাংশনটি ch
ভেরিয়েবলে থাকা A
অক্ষরটি কনসোলে আউটপুট করেছে।
gets()
বনাম fgets()
যেহেতু gets()
ফাংশনটি বাফার ওভারফ্লো ঘটাতে পারে, তাই fgets()
ফাংশনটি একটি নিরাপদ বিকল্প হিসেবে ব্যবহার করা হয়। fgets()
ইনপুটের আকার নির্দিষ্ট করতে দেয়, যার ফলে অতিরিক্ত ডেটা স্টোর হওয়ার ঝুঁকি থাকে না।
fgets()
উদাহরণ:#include <stdio.h>
int main() {
char name[100];
printf("Enter your name: ");
fgets(name, sizeof(name), stdin); // নিরাপদ স্ট্রিং ইনপুট
printf("Hello, %s", name);
return 0;
}
ফাংশন | কাজ | ব্যবহারের ধরন |
---|---|---|
gets() | স্ট্রিং ইনপুট (পরিত্যক্ত) | gets(string); |
puts() | স্ট্রিং আউটপুট | puts(string); |
getchar() | একক ক্যারেক্টার ইনপুট | char ch = getchar(); |
putchar() | একক ক্যারেক্টার আউটপুট | putchar(ch); |
fgets() | নিরাপদ স্ট্রিং ইনপুট | fgets(string, size, stdin); |
gets()
এবং puts()
স্ট্রিং ইনপুট এবং আউটপুটের জন্য ব্যবহৃত হয়, তবে gets()
ফাংশনটি নিরাপদ নয়, তাই fgets()
ফাংশন ব্যবহার করা বাঞ্ছনীয়। অন্যদিকে, getchar()
এবং putchar()
একক ক্যারেক্টার ইনপুট এবং আউটপুটের জন্য ব্যবহৃত হয়।
fopen()
, fclose()
, fread()
, fwrite()
, fprintf()
সি প্রোগ্রামিংয়ে ফাইল ইনপুট এবং আউটপুট (I/O) অপারেশন পরিচালনা করতে stdio.h
হেডার ফাইলটি ব্যবহৃত হয়। এই হেডার ফাইলের মাধ্যমে প্রোগ্রামাররা ফাইল থেকে ডেটা পড়তে, ফাইলে ডেটা লিখতে এবং ফাইল খোলার বা বন্ধ করার কাজ করতে পারেন। সি ভাষায় ফাইল পরিচালনার জন্য কিছু গুরুত্বপূর্ণ ফাংশন রয়েছে, যেমন fopen()
, fclose()
, fread()
, fwrite()
, এবং **fprintf()
**।
এখানে এই ফাংশনগুলোর বিস্তারিত আলোচনা করা হলো:
fopen()
– ফাইল খোলাfopen()
ফাংশনটি একটি ফাইল খোলার জন্য ব্যবহৃত হয়। এটি একটি ফাইল পয়েন্টার রিটার্ন করে, যা ফাইলের সাথে সম্পর্কিত অপারেশন করতে ব্যবহৃত হয়। ফাইলটি নির্দিষ্ট মোডে খোলা হয়, যেমন r
(পড়ার জন্য), w
(লেখার জন্য), a
(অ্যাপেন্ড), ইত্যাদি।
FILE *fopen(const char *filename, const char *mode);
ফাইল মোড:
"r"
– শুধুমাত্র পড়ার জন্য।"w"
– লেখার জন্য (ফাইলটি যদি থাকে তবে মুছে দেয়)।"a"
– অ্যাপেন্ড (ফাইলের শেষে লেখার জন্য)।"rb"
, "wb"
, "ab"
– বাইনারি মোডে কাজ করার জন্য।#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w"); // ফাইল লেখার জন্য খোলা
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
fprintf(file, "Hello, World!\n"); // ফাইলে লেখা
fclose(file); // ফাইল বন্ধ
return 0;
}
fclose()
– ফাইল বন্ধ করাfclose()
ফাংশনটি একটি খোলা ফাইল বন্ধ করার জন্য ব্যবহৃত হয়। এটি ফাইলের সাথে সম্পর্কিত সমস্ত রিসোর্স মুক্ত করে এবং ফাইল পয়েন্টারটি অবৈধ করে দেয়।
int fclose(FILE *file_pointer);
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file != NULL) {
fprintf(file, "Hello, World!\n");
fclose(file); // ফাইল বন্ধ
}
return 0;
}
fread()
– ফাইল থেকে ডেটা পড়াfread()
ফাংশনটি একটি ফাইল থেকে নির্দিষ্ট পরিমাণ ডেটা পড়তে ব্যবহৃত হয়। এটি বাইনারি ফাইল থেকে ডেটা পড়তে সবচেয়ে বেশি ব্যবহৃত হয়।
size_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer);
ptr
– যেখানে ডেটা স্টোর হবে (বাফার)।size
– প্রতি এলিমেন্টের আকার।count
– মোট এলিমেন্টের সংখ্যা।file_pointer
– ফাইল পয়েন্টার।#include <stdio.h>
int main() {
FILE *file = fopen("example.bin", "rb"); // বাইনারি ফাইল খোলা
if (file == NULL) {
printf("File not found.\n");
return 1;
}
int buffer[10];
fread(buffer, sizeof(int), 10, file); // ফাইল থেকে 10টি ইন্ট পড়া
fclose(file);
for (int i = 0; i < 10; i++) {
printf("%d ", buffer[i]);
}
return 0;
}
fwrite()
– ফাইলে ডেটা লেখাfwrite()
ফাংশনটি ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি বাইনারি ফাইলের জন্য সবচেয়ে বেশি ব্যবহৃত হয়।
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer);
ptr
– যেখান থেকে ডেটা লেখা হবে।size
– প্রতি এলিমেন্টের আকার।count
– মোট এলিমেন্টের সংখ্যা।file_pointer
– ফাইল পয়েন্টার।#include <stdio.h>
int main() {
FILE *file = fopen("example.bin", "wb"); // বাইনারি ফাইল খোলা
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
int data[] = {1, 2, 3, 4, 5};
fwrite(data, sizeof(int), 5, file); // ফাইলে 5টি ইন্ট লেখা
fclose(file);
return 0;
}
fprintf()
– ফাইলের মাধ্যমে ফরম্যাটেড আউটপুটfprintf()
ফাংশনটি ফাইলের মধ্যে ফরম্যাটেড আউটপুট লেখার জন্য ব্যবহৃত হয়। এটি printf()
এর মতো, তবে আউটপুট কনসোলের পরিবর্তে ফাইলে লেখা হয়।
int fprintf(FILE *file_pointer, const char *format, ...);
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w"); // ফাইল লেখার জন্য খোলা
if (file == NULL) {
printf("File not opened.\n");
return 1;
}
fprintf(file, "Name: %s\nAge: %d\n", "John Doe", 30); // ফাইলে ফরম্যাটেড আউটপুট লেখা
fclose(file);
return 0;
}
ফাংশন | কাজ | ব্যবহারের ধরন |
---|---|---|
fopen() | ফাইল খোলা | FILE *file = fopen("filename", "mode"); |
fclose() | ফাইল বন্ধ করা | fclose(file); |
fread() | ফাইল থেকে ডেটা পড়া | fread(buffer, size, count, file); |
fwrite() | ফাইলে ডেটা লেখা | fwrite(buffer, size, count, file); |
fprintf() | ফাইলের মাধ্যমে ফরম্যাটেড আউটপুট লেখা | fprintf(file, "format", ...); |
এই ফাংশনগুলোর মাধ্যমে সি প্রোগ্রামে ফাইল থেকে ইনপুট/আউটপুট সহজে পরিচালনা করা যায়। ফাইল ম্যানিপুলেশনের জন্য সঠিক ফাইল মোড এবং সঠিক ফাংশন ব্যবহার করা গুরুত্বপূর্ণ।
common.read_more